package org.lemon.cla.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.lemon.cla.pojo.CanteenMenu;
import org.lemon.cla.mapper.CanteenMenuMapper;
import org.lemon.cla.service.ICanteenMenuService;
import org.lemon.cla.dto.request.CanteenMenuSearchRequest; // 导入查询请求 DTO
import org.springframework.stereotype.Service;

@Service
public class CanteenMenuServiceImpl extends ServiceImpl<CanteenMenuMapper, CanteenMenu> implements ICanteenMenuService {

    /**
     * 实现根据多个条件模糊查询食堂菜单的方法。
     * 这个方法会根据 CanteenMenuSearchRequest 中的参数动态构建查询条件，并进行分页。
     *
     * @param page 分页对象
     * @param request 查询请求DTO，包含模糊查询的各种条件
     * @return 分页食堂菜单列表
     */
    @Override // 确保这个注解存在，表示实现接口方法
    public IPage<CanteenMenu> searchCanteenMenusByConditions(Page<CanteenMenu> page, CanteenMenuSearchRequest request) {
        QueryWrapper<CanteenMenu> queryWrapper = new QueryWrapper<>();

        // 1. 食堂名称模糊查询
        if (request.getCanteenName() != null && !request.getCanteenName().isEmpty()) {
            queryWrapper.like("canteen_name", request.getCanteenName());
        }

        // 2. 星期精确匹配
        // 这里的 request.getWeekday() 返回的是 WeekdayEnum，MyBatis-Plus 会自动处理枚举到数据库值的映射
        if (request.getWeekday() != null) {
            queryWrapper.eq("weekday", request.getWeekday());
        }

        // 可以添加默认排序，例如按食堂名称升序或菜单ID降序
        queryWrapper.orderByAsc("canteen_name");

        // 执行分页查询，baseMapper 是 ServiceImpl 提供的 Mapper 实例
        return baseMapper.selectPage(page, queryWrapper);
    }
}